home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Utilities / PPC / PPCGNUtar / source / sas_stat / stat.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-11  |  2.6 KB  |  75 lines

  1. /*
  2. ** mkisofs for the Amiga (SAS/C compiler)
  3. ** by Flavio Stanchina <flavio@ies.it> 3/97
  4. **
  5. ** renamed functions (prefix sas_) to get the linker
  6. ** using these instead (also see REDEFINES.WTH) (ARK, 11 Sep 97)
  7. */
  8.  
  9. #ifndef _STAT_H
  10. #define _STAT_H 1
  11.  
  12. #include <time.h>
  13.  
  14. typedef unsigned long  dev_t;   /* device number */
  15. typedef unsigned long  ino_t;   /* inode number */
  16. typedef unsigned short mode_t;  /* permissions */
  17. typedef unsigned short nlink_t; /* link count */
  18. typedef unsigned short uid_t;   /* owner user id */
  19. typedef unsigned short gid_t;   /* owner group id */
  20. typedef          long  off_t;   /* file offset */
  21.  
  22. struct stat
  23. {
  24.         dev_t    st_dev;       /* inode's device (Amiga: volume node) */
  25.         ino_t    st_ino;       /* inode's number (Amiga: disk key) */
  26.         mode_t   st_mode;      /* inode protection mode */
  27.         nlink_t  st_nlink;     /* number of hard links */
  28.         uid_t    st_uid;       /* file user id */
  29.         gid_t    st_gid;       /* file group id */
  30.         dev_t    st_rdev;      /* device type (Amiga: file system type) */
  31.         off_t    st_size;      /* file size in bytes */
  32.         time_t   st_atime;     /* time last accessed */
  33.         time_t   st_mtime;     /* time last modified */
  34.         time_t   st_ctime;     /* time last status change */
  35. //      long     st_blksize;   /* optimal blocksize for I/O */
  36.         long     st_blocks;    /* blocks allocated for file */
  37.         char    *st_comment;   /* Amiga file comment */
  38. };
  39.  
  40. #define S_IFMT  0170000   /* type of file */
  41. #define S_IFDIR 0040000   /* directory */
  42. #define S_IFREG 0100000   /* regular */
  43. #define S_IFLNK 0120000   /* symbolic link */
  44.  
  45. #define S_IRWXU 0000700   /* RWX mask for owner */
  46. #define S_IRUSR 0000400   /* R for owner */
  47. #define S_IWUSR 0000200   /* W for owner */
  48. #define S_IXUSR 0000100   /* X for owner */
  49.  
  50. #define S_IRWXG 0000070   /* RWX mask for group */
  51. #define S_IRGRP 0000040   /* R for group */
  52. #define S_IWGRP 0000020   /* W for group */
  53. #define S_IXGRP 0000010   /* X for group */
  54.  
  55. #define S_IRWXO 0000007   /* RWX mask for other */
  56. #define S_IROTH 0000004   /* R for other */
  57. #define S_IWOTH 0000002   /* W for other */
  58. #define S_IXOTH 0000001   /* X for other */
  59.  
  60. #define S_IREAD  S_IRUSR
  61. #define S_IWRITE S_IWUSR
  62. #define S_IEXEC  S_IXUSR
  63.  
  64. #define S_ISBLK(x) (0)
  65. #define S_ISCHR(x) (0)
  66. #define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
  67. #define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
  68. #define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK)
  69.  
  70. int  sas_stat(const char *path, struct stat *buf);
  71. int sas_lstat(const char *path, struct stat *buf);
  72. int sas_readlink(const char *path, char *buf, size_t bufsize);
  73.  
  74. #endif /* _STAT_H */
  75.